home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
pascal
/
dialer.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1989-10-18
|
4KB
|
114 lines
(*
This has been tested on a CASE 4624/V and a Robotics Courier 2400
THIS HAS NOT BEEN DEBUGGED and I am not great with communications.
It is just that I had to search for days to find a simple way
to make one of my programs dial out on a modem, and I have used Compu
Serve so many times for other ideas but could find nothing for this.
So I should share this with others.
After many days of searching the answer turned out to be really simple
and this is it.
This is a small procedure that will enable you to use your modem as a dialer
it uses Intr 14h to set the modem parameters and the built in TP array Port
to write the Hayes AT Command set to the com port.
-----------------------------------------------------------------------------
The bits of the AL register are as follows for serial initialization
7,6,5 4,3 2 1,0
Baud Rate Parity Stop Bits Word Length
000 = 110 00 = none 0 = 1 bit 10 = 7 bits
001 = 150 01 = odd 1 = 2 bits 11 = 8 bits
010 = 300 10 = none
011 = 600 11 = even
100 = 1200
101 = 2400
110 = 4800
111 = 9600
For 2400 Baud, Even Parity, 1 Stop and 7 bits
you would load Binary 101 11 0 10 into the AL register
and 10111010 equals BA in hex
-----------------------------------------------------------------------------
Port is a TP build in array for accessing the COM ports
so " Port[$3F8] := Ord('A'); " sends the character 'A' to COM1
or " Ch := Chr(Port[$3F8]); " reads a character from COM1
Addresses are
3F8h = COM1
2F8h = COM2
3E8h = COM3
2E8h = COM4
-----------------------------------------------------------------------------
Calling Interupt $14 will access the Serial Port. The function depends
on what is in the AH register
{ DX Holds The COM Port Number : 0 = COM1, 1 = COM2, 2 = COM3 and 3 = COM4 }
AH = 0 Sets serial port parameters
AH = 1 Outputs Character to serial port
AH = 2 Inputs character from serial port
AH = 3 Returns Status information about a serial port
I Just Use Function 0 to set up the Serial Port
*)
Program Dialer;
Uses Dos,Crt;
Var TestNumber : String;
Procedure SendModemStr(ModemStr : String);
var
I : Integer;
Regs : Registers;
begin
regs.ah := 0; (* Set Serial Port Parameters *)
Regs.al := $BA; (* Set To 8, 1, Even at 2400 Baud *)
regs.dx := $0; (* Set COM Port to COM1 *)
Intr($14,Regs); (* Call Intr 14h to set these *)
for i := 1 to Length(ModemStr) do
begin
Port[$3F8] := Ord(ModemStr[i]); (* Send Character to COM1 *)
Delay(5); (* Delay Between Sends Because Speed *)
end; (* of Computer is to Fast For Modem *)
Delay(3000); (* Set so as not to miss key press *)
writeln('Press any Key');
Repeat Until ReadKey <> ''; (* Wait For Key Press *)
ModemStr := 'ATH' + #13; (* Set and Send Hang Up Command *)
for i := 1 to Length(ModemStr) do
begin
Port[$3F8] := Ord(ModemStr[i]); (* Send Hang Up Command to Modem *)
Delay(5);
end;
end;
begin
(* Set Up Your Dialer Program Here *)
TestNumber := '555 5555';
SendModemStr('ATDT'+TestNumber+#13); (* Add AT Command ATDT which is Tone *)
(* Dial and <CR> to Number String *)
end.